package com.softer.wxzj.service;


import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.*;
import com.softer.wxzj.service.base.BaseService;

import java.util.List;

/**
 * @author Niu
 * @create 2019/5/21 - 10:05 - 星期二
 */
public interface BaseOwnerInfoService extends BaseService<BaseOwnerInfo> {

    /**
     * 获取业主信息列表
     *
     * @param page
     * @return
     */
    PageInfo<BaseOwnerInfoList> getBaseOwnerInfoList(Page page, BaseOwnerInfoList baseOwnerInfo);

    /**
     * 根据业主id查询业主信息
     *
     * @param id
     * @return
     */
    BaseOwnerInfo getBaseOwnerInfoModule(String id);

    /**
     * 根据业主id查询业主详细信息
     *
     * @param id 业主id
     * @return
     */
    BaseOwnerInfoMap getInfoMap(String id);

    /**
     * 修改保存新旧数据
     *
     * @param baseOwnerInfo 业主信息实体
     * @return
     * @throws Exception
     */
    CommonResult updateToSave(List<BaseOwnerInfo> baseOwnerInfo, String modifyType, String modifyCause) throws Exception;

    /**
     * 生成业主编号
     * @param houseId
     * @return
     */
      String ownerNo(String houseId);
    /**
     * 新增
     *
     * @param baseOwnerInfoList
     * @return
     */
    CommonResult insert(List<BaseOwnerInfo> baseOwnerInfoList);

    /**
     * 查询变更详情列表
     *
     * @return
     */
    PageInfo<BaseModifyDetail> getModifyDetailList(Page page, String id);

    /**
     * 变更审批流程
     *
     * @param
     */
    CommonResult modifyAudit(String id, String opinion, String mark);

    /**
     * 新增或修改 批量操作
     *
     * @param baseOwnerInfoList
     * @return
     */
    CommonResult insertOrUpdate(List<BaseOwnerInfo> baseOwnerInfoList);

    /**
     * 模糊查询业主信息列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 业主信息
     */
    PageInfo<BaseOwnerFuzzy> fuzzySearch(Page page, String param);
    /**
     * 根据房间ID查询业主和共有人
     *
     * @param houseId 房间Id
     * @param arcType 图档类型
     * @return 结果
     */
    List<BaseOwnerInfoMap> getOwnerListByHouseId(String houseId,String arcType);
    /**
     * 修改业主
     *
     * @param baseOwnerInfoList 业主/共有人集合
     * @return 结果
     */
    CommonResult updateOwnerAndHouse(List<BaseOwnerInfo> baseOwnerInfoList);
    /**
     * 新增业主前，查询业主房间的信息
     *
     * @param houseId 房间Id
     * @return 结果
     */
    BaseOwnerInfoMap getOwnerHouseInfo(String houseId);
    PageInfo<BaseOwnerInfoList> getList(Page page, BaseOwnerInfoList baseOwnerInfo) ;

    /**
     * 绑定附房
     * @param baseOwnerInfoList
     * @param houseId
     * @return
     */
    CommonResult bindSubHouse(List<BaseOwnerInfo> baseOwnerInfoList, String houseId , String subHouseId);
    /**
     * 根据房屋id查询业主附房列表
     * @param accNo
     * @return
     */
    List<BaseOwnerInfo> getSubHouseList(String accNo);

    /**
     * 操作业主附房
     * @param baseOwnerInfoList
     * @return
     */
    CommonResult insertOrUpdateToView(List<BaseOwnerInfo> baseOwnerInfoList);

    /**
     * 删除业主信息
     * @param idList
     * @return
     */
    CommonResult deleteToView(String idList);

    /**
     * 根绝房屋id查询业主
     * @param houseId
     * @return
     */
    BaseOwnerInfo selectOwner(String houseId);

    /**
     * 房屋过户旧业主信息
     * @param ownerNo
     * @return
     */
    List<BaseOwnerInfo> selectOwnerByOwnerNo(String ownerNo);

    /**
     * 查询新的业主信息
     * @param qId
     * @return
     */
    List<BaseOwnerInfo> selectNewowner(String qId);

}
